<TagAttribute("model_animations","antr","????","????",4,128)>
Public Class MODEL_ANIMATIONS_TAG
Inherits HaloTag
Public Const Extension as String = "model_animations"
Public Const FourCC as String = "antr"
Public Const ParentFourCC as String = "????"
Public Const GrandParentFourCC as String = "????"
Public Const [Version] as Short = 4
Public Const HeaderLength as Integer = 128

''' <summary>
''' animation_graph_object_overlay
''' </summary>
<TagField("OBJECTS", 20, 11)>
Public objects as List(Of OBJECTS_BLOCK)

''' <summary>
''' animation_graph_unit_seat_block
''' </summary>
<TagField("UNITS", 100, 11)>
Public units as List(Of UNITS_BLOCK)

''' <summary>
''' animation_graph_weapon_animations_block
''' </summary>
<TagField("WEAPONS", 28, 11)>
Public weapons as List(Of WEAPONS_BLOCK)

''' <summary>
''' animation_graph_vehicle_animations_block
''' </summary>
<TagField("VEHICLES", 116, 11)>
Public vehicles as List(Of VEHICLES_BLOCK)

''' <summary>
''' device_animations
''' </summary>
<TagField("DEVICES", 96, 11)>
Public devices as List(Of DEVICES_BLOCK)

''' <summary>
''' unit_damage_animations
''' </summary>
<TagField("UNIT DAMAGE", 2, 11)>
Public unit_damage as List(Of UNIT_DAMAGE_BLOCK)

''' <summary>
''' animation_graph_first_person_weapon_animations_block
''' </summary>
<TagField("FIRST PERSON WEAPONS", 28, 11)>
Public first_person_weapons as List(Of FIRST_PERSON_WEAPONS_BLOCK)

''' <summary>
''' animation_graph_sound_reference_block
''' </summary>
<TagField("sound references", 20, 11)>
Public sound_references as List(Of SOUND_REFERENCES_BLOCK)

''' <summary>
''' 0 uses 0.04 default
''' </summary>
<TagField("limp body node radius", 1, 0)>
Public limp_body_node_radius as Single

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' animation_graph_node_block
''' </summary>
<TagField("nodes", 64, 11)>
Public nodes as List(Of NODES_BLOCK)

''' <summary>
''' animation_block
''' </summary>
<TagField("animations", 180, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)
Public Class OBJECTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

''' <summary>
''' 
''' </summary>
<TagField("function", 1, 17)>
Public _function as Short

''' <summary>
''' 
''' </summary>
<TagField("function controls", 1, 17)>
Public function_controls as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

End Class
Public Class UNITS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("label^", 32, 8)>
Public label as String

''' <summary>
''' 
''' </summary>
#Region "looking screen bounds"

''' <summary>
''' 
''' </summary>
<TagField("right yaw per frame", 1, 0)>
Public right_yaw_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("left yaw per frame", 1, 0)>
Public left_yaw_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("right frame count", 1, 23)>
Public right_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("left frame count", 1, 23)>
Public left_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("down pitch per frame", 1, 0)>
Public down_pitch_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("up pitch per frame", 1, 0)>
Public up_pitch_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("down pitch frame count", 1, 23)>
Public down_pitch_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("up pitch frame count", 1, 23)>
Public up_pitch_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' unit_seat_animation_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)

''' <summary>
''' animation_graph_unit_seat_ik_point
''' </summary>
<TagField("ik points", 64, 11)>
Public ik_points as List(Of IK_POINTS_BLOCK)

''' <summary>
''' animation_graph_weapon_block
''' </summary>
<TagField("weapons", 188, 11)>
Public weapons as List(Of WEAPONS_BLOCK)
#End Region
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class
Public Class IK_POINTS_BLOCK

''' <summary>
''' the marker name on the object being attached
''' </summary>
<TagField("marker", 32, 8)>
Public marker as String

''' <summary>
''' the marker name object (weapon, vehicle, etc.) the above marker is being attached to
''' </summary>
<TagField("attach to marker", 32, 8)>
Public attach_to_marker as String

End Class
Public Class WEAPONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' the marker name on the weapon to which the hand is attached (leave blank to use origin)
''' </summary>
<TagField("grip marker", 32, 8)>
Public grip_marker as String

''' <summary>
''' the marker name on the unit to which the weapon is attached
''' </summary>
<TagField("hand marker", 32, 8)>
Public hand_marker as String

''' <summary>
''' 
''' </summary>
#Region "aiming screen bounds"

''' <summary>
''' 
''' </summary>
<TagField("right yaw per frame", 1, 0)>
Public right_yaw_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("left yaw per frame", 1, 0)>
Public left_yaw_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("right frame count", 1, 23)>
Public right_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("left frame count", 1, 23)>
Public left_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("down pitch per frame", 1, 0)>
Public down_pitch_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("up pitch per frame", 1, 0)>
Public up_pitch_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("down pitch frame count", 1, 23)>
Public down_pitch_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("up pitch frame count", 1, 23)>
Public up_pitch_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

''' <summary>
''' weapon_class_animation_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)

''' <summary>
''' animation_graph_unit_seat_ik_point
''' </summary>
<TagField("ik points", 64, 11)>
Public ik_points as List(Of IK_POINTS_BLOCK)

''' <summary>
''' animation_graph_weapon_type_block
''' </summary>
<TagField("weapon types", 60, 11)>
Public weapon_types as List(Of WEAPON_TYPES_BLOCK)
#End Region
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class
Public Class IK_POINTS_BLOCK

''' <summary>
''' the marker name on the object being attached
''' </summary>
<TagField("marker", 32, 8)>
Public marker as String

''' <summary>
''' the marker name object (weapon, vehicle, etc.) the above marker is being attached to
''' </summary>
<TagField("attach to marker", 32, 8)>
Public attach_to_marker as String

End Class
Public Class WEAPON_TYPES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("label^", 32, 8)>
Public label as String

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

''' <summary>
''' weapon_type_animation_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class

End Class

End Class

End Class
Public Class WEAPONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

''' <summary>
''' weapon_animation_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class

End Class
Public Class VEHICLES_BLOCK

''' <summary>
''' 
''' </summary>
#Region "steering screen"

''' <summary>
''' 
''' </summary>
<TagField("right yaw per frame", 1, 0)>
Public right_yaw_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("left yaw per frame", 1, 0)>
Public left_yaw_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("right frame count", 1, 23)>
Public right_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("left frame count", 1, 23)>
Public left_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("down pitch per frame", 1, 0)>
Public down_pitch_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("up pitch per frame", 1, 0)>
Public up_pitch_per_frame as Single

''' <summary>
''' 
''' </summary>
<TagField("down pitch frame count", 1, 23)>
Public down_pitch_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("up pitch frame count", 1, 23)>
Public up_pitch_frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("", 68, -1)>
Public padding as Byte()

''' <summary>
''' vehicle_animation_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)

''' <summary>
''' suspension_animation_block
''' </summary>
<TagField("suspension animations", 20, 11)>
Public suspension_animations as List(Of SUSPENSION_ANIMATIONS_BLOCK)
#End Region
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class
Public Class SUSPENSION_ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("mass point index", 1, 23)>
Public mass_point_index as Short

''' <summary>
''' 
''' </summary>
<TagField("animation^", 1, 23)>
Public animation as Short

''' <summary>
''' 
''' </summary>
<TagField("full extension ground_depth", 1, 0)>
Public full_extension_ground_depth as Single

''' <summary>
''' 
''' </summary>
<TagField("full compression ground_depth", 1, 0)>
Public full_compression_ground_depth as Single

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

End Class

End Class
Public Class DEVICES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 84, -1)>
Public padding as Byte()

''' <summary>
''' device_animation_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class

End Class
Public Class UNIT_DAMAGE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation^", 1, 23)>
Public animation as Short

End Class
Public Class FIRST_PERSON_WEAPONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

''' <summary>
''' first_person_weapon_block
''' </summary>
<TagField("animations", 2, 11)>
Public animations as List(Of ANIMATIONS_BLOCK)
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

End Class

End Class
Public Class SOUND_REFERENCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("sound^", 16, 10)>
Public sound as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

End Class
Public Class NODES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("next sibling node index", 1, 23)>
Public next_sibling_node_index as Short

''' <summary>
''' 
''' </summary>
<TagField("first child node index", 1, 23)>
Public first_child_node_index as Short

''' <summary>
''' 
''' </summary>
<TagField("parent node index", 1, 23)>
Public parent_node_index as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("Node joint flags", 1, 20)>
Public Node_joint_flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("base vector", 3, 2)>
Public base_vector as Single()

''' <summary>
''' 
''' </summary>
<TagField("vector range", 1, 0)>
Public vector_range as Single

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

End Class
Public Class ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("frame count", 1, 23)>
Public frame_count as Short

''' <summary>
''' 
''' </summary>
<TagField("frame size", 1, 23)>
Public frame_size as Short

''' <summary>
''' 
''' </summary>
<TagField("frame info type", 1, 17)>
Public frame_info_type as Short

''' <summary>
''' 
''' </summary>
<TagField("node list checksum", 1, 4)>
Public node_list_checksum as Integer

''' <summary>
''' 
''' </summary>
<TagField("node count", 1, 23)>
Public node_count as Short

''' <summary>
''' 
''' </summary>
<TagField("loop frame index", 1, 23)>
Public loop_frame_index as Short

''' <summary>
''' 
''' </summary>
<TagField("weight", 1, 0)>
Public weight as Single

''' <summary>
''' 
''' </summary>
<TagField("key frame index", 1, 23)>
Public key_frame_index as Short

''' <summary>
''' 
''' </summary>
<TagField("second key frame index", 1, 23)>
Public second_key_frame_index as Short

''' <summary>
''' 
''' </summary>
<TagField("next animation", 1, 23)>
Public next_animation as Short

''' <summary>
''' 
''' </summary>
<TagField("flags*", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("sound", 1, 23)>
Public sound as Short

''' <summary>
''' 
''' </summary>
<TagField("sound frame index", 1, 23)>
Public sound_frame_index as Short

''' <summary>
''' 
''' </summary>
<TagField("left foot frame index", 1, 9)>
Public left_foot_frame_index as Byte

''' <summary>
''' 
''' </summary>
<TagField("right foot frame index", 1, 9)>
Public right_foot_frame_index as Byte

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("frame info", 1, 22)>
Public frame_info as New DATA_CONTAINER

''' <summary>
''' 
''' </summary>
<TagField("node translation flag data a", 1, 4)>
Public node_translation_flag_data_a as Integer

''' <summary>
''' 
''' </summary>
<TagField("node translation flag data b", 1, 4)>
Public node_translation_flag_data_b as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("node rotation flag data a", 1, 4)>
Public node_rotation_flag_data_a as Integer

''' <summary>
''' 
''' </summary>
<TagField("node rotation flag data b", 1, 4)>
Public node_rotation_flag_data_b as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("node scale flag data a", 1, 4)>
Public node_scale_flag_data_a as Integer

''' <summary>
''' 
''' </summary>
<TagField("node scale flag data b", 1, 4)>
Public node_scale_flag_data_b as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("offset to compressed data:bytes", 1, 4)>
Public offset_to_compressed_data as Integer

''' <summary>
''' 
''' </summary>
<TagField("default data", 1, 22)>
Public default_data as New DATA_CONTAINER

''' <summary>
''' 
''' </summary>
<TagField("frame data", 1, 22)>
Public frame_data as New DATA_CONTAINER

End Class

End Class
